/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.entidades;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 * Representa una entregable en el sistema
 */
@Entity
public class Entregable implements Serializable {

    /**
     * Identificador del entregable. Se calcula automaticamente
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    /**
     * Tipo del entregable
     */
    private String tipo;

    /*
     * Candidad del entergable
     */
    private int cantidad;
    /*
     * Ubicación del entregable
     */
    private String ubicacion;
    /*
     * estado del entregable
     */
    private boolean enPrestamo;

    /**
     * Constructor vacio de entregable
     */
    public Entregable() {
    }

    /**
     * Id de la entregable
     *
     * @return the Id
     */
    public int getId() {
        return id;
    }

    /**
     * se ingresa el Id del entregable
     *
     * @param Id the Id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * Devuelve el codigo hash de la clase deacuerdo al id de entregable
     *
     * @return Codigo hash calculado con el id de entregable
     */
    @Override
    public int hashCode() {
        int hash = 3;
        String tmp = "";

        if (this.id != -1) {
            tmp = id + "";
            hash = 29 * tmp.hashCode();
        } else {
            hash = 0;
        }
        return hash;
    }

    /**
     * Verifica si un objeto es igual a otro. Una ciudad es igual a otra si
     * tiene el mismo nombre
     *
     * @param obj Objeto con el cual se quiere comparar
     * @return true si el objeto es una ciudad y tiene el mismo nombre
     */
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Entregable other = (Entregable) obj;
        if ((this.id == -1) ? (other.id != -1) : this.id != (other.id)) {
            return false;
        }
        return true;
    }

    /**
     * Tipo del entregable
     *
     * @return the tipo
     */
    public String getTipo() {
        return tipo;
    }

    /**
     * Tipo del entregable
     *
     * @param tipo the tipo to set
     */
    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    /**
     * @return the cantidad
     */
    public int getCantidad() {
        return cantidad;
    }

    /**
     * @param cantidad the cantidad to set
     */
    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    /**
     * @return the ubicacion
     */
    public String getUbicacion() {
        return ubicacion;
    }

    /**
     * @param ubicacion the ubicacion to set
     */
    public void setUbicacion(String ubicacion) {
        this.ubicacion = ubicacion;
    }

    @Override
    public String toString() {
        return getTipo() + "-" + getUbicacion() + "-" + getId() + "-" + isEnPrestamo();
    }

    /**
     * @return el estado del entregable enPrestamo
     */
    public boolean isEnPrestamo() {
        return enPrestamo;
    }

    /**
     * @param enPrestamo se selecciona el estado del entregable
     */
    public void setEnPrestamo(boolean enPrestamo) {
        this.enPrestamo = enPrestamo;
    }
}
